package com.eddie.state;

/**
 * 发放奖品的状态
 *
 * @author Administrator
 */
public class DispenseState extends State {

    //初始化时传入活动引用，发放奖品后改变其状态
    RaffleActivity activity;

    public DispenseState(RaffleActivity activity) {
        this.activity = activity;
    }

    @Override
    public void deductMoney() {
        System.out.println("不能扣除积分");
    }

    @Override
    public boolean raffle() {
        System.out.println("不能抽奖");
        return false;
    }

    //发放奖品
    @Override
    public  void dispensePrize() {
        //判断奖品数量
        //这里每次调用getCount都会使count--，但是当前调用还是原数因为内部返回的是临时变量
        if (activity.getCount() > 0) {
            System.out.println("恭喜中奖了");
            //改变状态为不能抽奖
            activity.setState(activity.getNoRafflleState());
        } else {
            System.out.println("很遗憾奖品发放完了");
            // 设置状态为奖品发送完毕
            activity.setState(activity.getDispensOutState());
            System.out.println("\n---------------------------游戏gai束---------------------------");
            //终止虚拟机
            //如果状态设置非0那么就属于异常终止
            System.exit(0);
        }

    }
}
